package com.rain.friend.service;

import com.rain.friend.client.UserClient;
import com.rain.friend.dao.FriendDao;
import com.rain.friend.dao.NoFriendDao;
import com.rain.friend.pojo.Friend;
import com.rain.friend.pojo.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


@Service
public class FriendService {

    @Autowired
    private FriendDao friendDao;

    @Autowired
    private NoFriendDao noFriendDao;

    @Autowired
    private UserClient userClient;

    /**
     * 删除好友
     * @param userid (2)       1 2 1
     * @param friendid (1)     2 1 1
     */
    @Transactional
    public void deleteFriend(String userid,String friendid){
        friendDao.deleteFriend(userid,friendid);
        friendDao.updateIsLike(friendid,userid,"0");

        //用户id是减关注数
        userClient.incFollowcount(userid,-1);
        //朋友id是减粉丝数
        userClient.incFanscount(friendid,-1);

    }

    /**
     * 添加好友
     * @param userid    1       2
     * @param friendid  2       1
     * @return          0       0
     */
    @Transactional
    public int addFriend(String userid,String friendid){
        //1.判断当前用户是否已经关注过该friend
        int isFriend = friendDao.selectCount(userid,friendid);
        if(isFriend > 0){
            return 0;
        }
        //2.没关注过就要创建Friend对象
        Friend friend = new Friend();
        friend.setUserid(userid);
        friend.setFriendid(friendid);
        friend.setIslike("0");
        //3.保存
        friendDao.save(friend);
        //4.把friendid看成是userid，把userid看成是friendid再次去数据库查询
        int inverseFriend = friendDao.selectCount(friendid,userid);
        if(inverseFriend > 0){
            //已经互相关注了，更新两个数据
            friendDao.updateIsLike(userid,friendid,"1");
            friendDao.updateIsLike(friendid,userid,"1");
        }
        //用户id是涨关注数
        userClient.incFollowcount(userid,1);
        //朋友id是涨粉丝数
        userClient.incFanscount(friendid,1);
        return 1;
    }
    /*
    public void addFriend(String userid,String friendid){
        //1.判断当前用户是否已经关注过该friend
        int isFriend = friendDao.selectCount(userid,friendid);
        if(isFriend > 0){
            throw new RuntimeException("请不要重复操作");
        }
        //2.没关注过就要创建Friend对象
        Friend friend = new Friend();
        friend.setUserid(userid);
        friend.setFriendid(friendid);
        friend.setIslike("0");
        //3.保存
        friendDao.save(friend);
        //4.把friendid看成是userid，把userid看成是friendid再次去数据库查询
        int inverseFriend = friendDao.selectCount(friendid,userid);
        if(inverseFriend > 0){
            //已经互相关注了，更新两个数据
            friendDao.updateIsLike(userid,friendid,"1");
            friendDao.updateIsLike(friendid,userid,"1");
        }
    }*/

    /**
     * 拉黑
     * @param userid
     * @param friendid
     * @return
     */
    @Transactional
    public int addNoFriend(String userid,String friendid){
        int noFriendCount = noFriendDao.selectNoFriendCount(userid,friendid);
        if(noFriendCount > 0){
            return 0;
        }
        NoFriend noFriend = new NoFriend();
        noFriend.setUserid(userid);
        noFriend.setFriendid(friendid);
        noFriendDao.save(noFriend);
        return 1;
    }
}
